home *** CD-ROM | disk | FTP | other *** search
- ; "trnscrpt.scm", transcript functions for Scheme.
- ; Copyright (c) 1992, 1993, 1995 Aubrey Jaffer
- ;
- ;Permission to copy this software, to redistribute it, and to use it
- ;for any purpose is granted, subject to the following restrictions and
- ;understandings.
- ;
- ;1. Any copy made of this software must include this copyright notice
- ;in full.
- ;
- ;2. I have made no warrantee or representation that the operation of
- ;this software will be error-free, and I am under no obligation to
- ;provide any services, by way of maintenance, update, or otherwise.
- ;
- ;3. In conjunction with products arising from the use of this
- ;material, there shall be no use of my name in any advertising,
- ;promotional, or sales literature without prior written consent in
- ;each case.
-
- (define transcript:port #f)
-
- (define (transcript-on filename)
- (set! transcript:port (open-output-file filename)))
-
- (define (transcript-off)
- (if (output-port? transcript:port)
- (close-output-port transcript:port))
- (set! transcript:port #f))
-
- (define read-char
- (let ((read-char read-char) (write-char write-char))
- (lambda opt
- (let ((ans (apply read-char opt)))
- (cond ((eof-object? ans))
- ((output-port? transcript:port)
- (write-char ans transcript:port)))
- ans))))
-
- (define read
- (let ((read read) (write write) (newline newline))
- (lambda opt
- (let ((ans (apply read opt)))
- (cond ((eof-object? ans))
- ((output-port? transcript:port)
- (write ans transcript:port)
- (if (eqv? #\newline (apply peek-char opt))
- (newline transcript:port))))
- ans))))
-
- (define write-char
- (let ((write-char write-char))
- (lambda (obj . opt)
- (apply write-char obj opt)
- (if (output-port? transcript:port)
- (write-char obj transcript:port)))))
-
- (define write
- (let ((write write))
- (lambda (obj . opt)
- (apply write obj opt)
- (if (output-port? transcript:port)
- (write obj transcript:port)))))
-
- (define display
- (let ((display display))
- (lambda (obj . opt)
- (apply display obj opt)
- (if (output-port? transcript:port)
- (display obj transcript:port)))))
-
- (define newline
- (let ((newline newline))
- (lambda opt
- (apply newline opt)
- (if (output-port? transcript:port)
- (newline transcript:port)))))
-